《高性能網(wǎng)站建設(shè)指南》閱讀筆記_規(guī)則4- 壓縮組件
發(fā)布時(shí)間:2013-11-22 瀏覽:349打印字號:大中小
1.什么東西應(yīng)該壓縮?
a.圖片、PDF等二進(jìn)制文件不應(yīng)該壓縮,因?yàn)樗鼈円呀?jīng)壓縮過了
b.太小的文件不應(yīng)壓縮。為小文件壓縮而耗費(fèi)一些CPU時(shí)間不太值得。一般來說,應(yīng)該只對1KB或2KB以上的文件進(jìn)行壓縮。
2.瀏覽器端的支持
支持HTTP1.1的瀏覽器才能展現(xiàn)壓縮過的內(nèi)容。如果你用的是APACHE服務(wù)器,則可以設(shè)置“瀏覽器白名單”,只對名單里的客戶端傳輸壓縮過的內(nèi)容。
3.HTTP壓縮工作原理
Web服務(wù)器處理HTTP壓縮的工作原理如下:
Web服務(wù)器接收到瀏覽器的HTTP請求后,檢查瀏覽器是否支持HTTP壓縮;
如果瀏覽器支持HTTP壓縮,Web服務(wù)器檢查請求文件的后綴名;
如果請求文件是HTML、CSS等靜態(tài)文件,Web服務(wù)器到壓縮緩沖目錄中檢查是否已經(jīng)存在請求文件的最新壓縮文件;
如果請求文件的壓縮文件不存在,Web服務(wù)器向?yàn)g覽器返回未壓縮的請求文件,并在壓縮緩沖目錄中存放請求文件的壓縮文件;
如果請求文件的最新壓縮文件已經(jīng)存在,則直接返回請求文件的壓縮文件;
如果請求文件是ASPX等動(dòng)態(tài)文件,Web服務(wù)器動(dòng)態(tài)壓縮內(nèi)容并返回瀏覽器,壓縮內(nèi)容不存放到壓縮緩存目錄中。
4. IIS 6.0中配置HTTPGzip壓縮的步驟: (本文以windows server 2003操作系統(tǒng)和IIS6.0服務(wù)器為例).win7不行
1、雙擊IIS服務(wù)器,右鍵點(diǎn)擊網(wǎng)站,點(diǎn)擊屬性,然后點(diǎn)擊服務(wù),我們看到HTTP壓縮,然后在壓縮應(yīng)用程序文件,壓縮靜態(tài)文件中打鉤,然后點(diǎn)擊確定,第一步就完成了
2、然后我們右鍵點(diǎn)擊web服務(wù)擴(kuò)展,點(diǎn)擊添加一個(gè)新的web服務(wù)擴(kuò)展,輸入擴(kuò)展名,為了便于我們識別,我們可以起名為gzip(關(guān)于起名應(yīng)該是隨意吧,小編沒有測試過),然后點(diǎn)擊添加,選擇C:\WINDOWS\system32\inetsrv\gzip.dll,然后點(diǎn)擊確定,擴(kuò)展?fàn)顟B(tài)為允許,否則gzip不能生效,一切完成,我們就可以點(diǎn)擊確定了.
3、接下來也是最重要的一步了,編輯IIS配置數(shù)據(jù)庫配置文件,在此操作之前,我們應(yīng)該關(guān)閉IIS服務(wù)器才能進(jìn)行接下來的操作,當(dāng)然我們也可以不關(guān)閉IIS服務(wù)器,我們雙擊IIS服務(wù)器,右鍵點(diǎn)擊本地計(jì)算機(jī),點(diǎn)擊屬性,在允許直接編輯配置數(shù)據(jù)庫上打鉤,那么我們不用關(guān)閉IIS就能直接配置服務(wù)器配置數(shù)據(jù)庫配置文件了
4、 我們找到C:\WINDOWS\system32\inetsrv下的MetaBase.xml文件,操作這個(gè)文件之前應(yīng)該先復(fù)制一份,以免出現(xiàn)意外的情況.打開此文件,搜索deflate,找到HcDoStaticCompression原來為false改為true,HcDynamicCompressionLevel原來為0,改為9,HcFileExtensions里面就可以添加我們需要壓縮的后綴,這里添加的是靜態(tài)文件,一般壓縮html,js,css圖片不列為壓縮之列.動(dòng)態(tài)的文件可不可以壓縮呢,當(dāng)然可以HcScriptFileExtensions里面就是填寫要壓縮的動(dòng)態(tài)文件.配置完這個(gè),我們要來配置下面的gzip,他們兩個(gè)緊挨著的,配置方法相同.
5、一切步驟都就緒了,我們看看是否開啟成功了呢,那么怎樣查看呢,方法有兩種,可以使用火狐的firebug,還可以使用站長工具查看
注意事項(xiàng):
配置數(shù)據(jù)庫配置文件之前應(yīng)該關(guān)閉IIS,或者啟用允許直接編輯數(shù)據(jù)庫
在操作MetaBase.xml文件之前應(yīng)該先備份一下,防止意外情況發(fā)生.
7、邊緣情形:
正常情況下,當(dāng)瀏覽器直接與服務(wù)器通信時(shí)我只要按常規(guī)的配置即可。但是當(dāng)瀏覽器通過代理來發(fā)送請求的時(shí)候就變得非常復(fù)雜。可能會產(chǎn)生邊緣情形(發(fā)送壓縮內(nèi)容到不支持它的客戶端,忘記將壓縮內(nèi)容生命為已經(jīng)進(jìn)行了gzip壓縮編碼等)這就需要考慮壓縮和緩存之間的平衡。


